In moving picture coding, generally, an information amount is compressed by using a redundancy of a spatial direction and a temporal direction of moving pictures. Here, in general, one of the methods using a redundancy in a spatial direction is transformation to a frequency domain, and one of the methods using a redundancy in a temporal direction is inter-picture prediction (hereinafter, referred to as “inter prediction”) coding. In the inter prediction coding, when a current picture is to be coded, a coded picture prior or subsequent to the current picture in display order is used as a reference picture. Then, motion estimation is performed on the current picture corresponding to the reference picture to estimate a motion vector. Then, a difference between prediction image data generated by motion compensation based on the estimated motion vector and image data of the current picture is obtained to remove a redundancy in a temporal direction. Here, in the motion estimation, a difference value between the current block in a current picture and a block in the reference picture is calculated, and a block having the smallest difference value in the reference picture is determined as a reference block. Then, by using the current block and the reference block, a motion vector is estimated.
In the moving picture coding scheme known as H.264 that has already been standardized, in order to compress an information amount, three picture types of I picture, P picture, and B picture are used. I picture is a picture on which inter prediction coding is not performed, in other words, on which intra-picture prediction (hereinafter, referred to as “intra prediction”) coding is performed. P picture is a picture on which inter prediction coding is performed with reference to one coded picture located prior or subsequent to the current picture in display order. B picture is a picture on which inter prediction coding is performed with reference to two coded pictures located prior or subsequent to the current picture in display order.
In the inter prediction coding, a reference picture list for specifying a reference picture is generated. The reference picture list is a list in which a coded reference picture to be referred to in inter prediction is assigned with a corresponding value(s) of a reference picture index. For example, since a B picture can be coded with reference to two pictures, a B picture has two reference picture lists (L0, L1).
FIG. 1A is a diagram for explaining assignment of reference picture indexes for each of reference pictures. FIGS. 1B and 1C show an example of a pair of reference picture lists for a B picture. In FIG. 1A, for example, it is assumed that a reference picture 2, a reference picture 1, a reference picture 0, and a current picture to be coded are arranged in display order. Under the assumption, the reference picture list 0 (L0) is an example of a reference picture list in a prediction direction 0 (the first prediction direction) for bi-directional prediction. As shown in FIG. 1B, a value “0” of a reference picture index 0 is assigned to the reference picture 0 arranged in the display order 2, a value “1” of the reference picture index 0 is assigned to the reference picture 1 arranged in the display order 1, and a value “2” of the reference picture index 0 is assigned to the reference picture 2 arranged in the display order 0. In short, a greater value of the reference picture index is assigned to a picture temporally closer to the current picture in the display order. On the other hand, the reference picture list 1 (L1) is an example of a reference picture list in a prediction direction 1 (the second prediction direction) for bi-directional prediction. In the reference picture list 1 (L1), a value “0” of a reference picture index 1 is assigned to the reference picture 1 arranged in the display order 1, a value “1” of the reference picture index 1 is assigned to the reference picture 0 arranged in the display order 2, and a value “2” of the reference picture index 1 is assigned to the reference picture 2 arranged in the display order 0. As described above, for each of reference pictures, it is possible to assign different reference picture indexes to respective prediction directions (the reference pictures 0 and 1 in FIG. 1A), or assign the same reference picture index to both prediction directions (reference picture 2 in FIG. 1A).
Furthermore, in the moving picture coding method scheme known as H.264 (see Non-Patent Literature 1), as an inter prediction coding mode for each current block in a B picture, there is a motion vector estimation mode of coding (a) a difference value between prediction image data and image data of a current block and (b) a motion vector used in generating the prediction image data. At the motion vector estimation mode, either bi-directional prediction or one-directional prediction is selected. In the bi-directional prediction, a prediction image is generated with reference to two coded pictures located prior or subsequent to the current picture. On the other hand, in the one-directional prediction, a prediction image is generated with reference to one coded picture located prior or subsequent to the current picture.
Moreover, in the moving picture coding scheme known as H.264, in coding of a B picture, when motion vectors are to be derived, it is possible to select a coding mode called a temporal prediction motion vector mode. The inter prediction coding method at the temporal prediction motion vector mode is described with reference to FIG. 2. FIG. 2 is an explanatory diagram showing motion vectors at the temporal prediction motion vector mode, and shows the situation where a block “a” in a picture B2 is coded at the temporal prediction motion vector mode. In this situation, a motion vector vb is used. The motion vector vb has been used to code a block “b” in a picture P3 that is a reference picture located subsequent to the picture 52. The block “b” (hereinafter, referred to as a “co-located block”) is located, in the picture P3, at a position corresponding to the position of the block “a”. The motion vector vb is a motion vector that has been used to code the block “b”, and refers to a picture P1. By using a motion vector in parallel to the motion vector vb, the block “a” obtains reference blocks from the picture P1 that is a forward reference picture and from the picture P3 that is a backward reference picture. Thereby, bi-directional prediction is performed to code the block “a”. More specifically, the motion vectors used to code the block “a” are a motion vector va1 regarding the picture PI and a motion vector va2 regarding the picture P3.